package com.hehui.module.goods.contorller;

import com.hehui.common.core.commom.AjaxResult;
import com.hehui.common.core.controller.BaseController;
import com.hehui.common.core.page.TableDataInfo;
import com.hehui.module.goods.entity.BaseUnit;
import com.hehui.module.goods.entity.RefGoodsUnit;
import com.hehui.module.goods.service.IBaseUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 商品单位控制类 ----------- 已完成（未与前端进行测试）
 */
@RestController
@RequestMapping("/BaseUnit")
public class BaseUnitContorller extends BaseController {

    @Autowired
    IBaseUnitService baseUnitService;

    /**
     * （已修改）
     * 查询所有商品单位带分页 （ id_del字段 为 1 ） 需要商户id
     * @return  单位集合
     */
    @GetMapping("/findBaseUnit")
    public TableDataInfo findBaseUnit(Long merchantId){
        startPage();
        List<BaseUnit> list = baseUnitService.findBaseUnit(merchantId);
        return getDataTable(list);
    }

    /**
     * 添加商品单位
     * @param baseUnit 商品单位 实体
     * @return
     */
    @PostMapping("/addBaseUnit")
    public AjaxResult addBaseUnit(@RequestBody BaseUnit baseUnit){

        if ("".equals(baseUnit.getBuName()) && baseUnit.getBuName() == null){
            return AjaxResult.success("单位名不能为空");
        }
        // 添加前查询 商品单位是否存在
        List<BaseUnit> unitList = baseUnitService.findBaseUnitByName(baseUnit.getBuName(),baseUnit.getBuMerchantid());
        if(unitList != null && unitList.size() != 0){
            return AjaxResult.success("添加失败，单位名重复");
        }
        return toAjax(baseUnitService.addBaseUnit(baseUnit));
    }

    /**(已修改)
     * 根据名字模糊查询带分页 带商户id
     * @param unitName 查询的名字
     * @return
     */
    @GetMapping("/findBaseUnitByNameLike")
    public TableDataInfo findBaseUnitByNameLike(String unitName,Long merchantId){
        startPage();
        List<BaseUnit> list = baseUnitService.findBaseUnitByNameLike(unitName,merchantId);
        return getDataTable(list);
    }

    /**
     * 删除商品单位 （删除判断 是否在商品和单位中间表中关联）
     * @param unitId 商品单位id
     * @return
     */
    @GetMapping("/delBaseUnit")
    public AjaxResult delBaseUnit(Long unitId){
        // 商品单位不能为空
        if ( unitId == null || unitId.longValue() <= 0){
            return AjaxResult.success("商品单位id不能为空或者小于等于 0");
        }
        // 根据商品单位id去商品和单位中间表 查询
        List<RefGoodsUnit> list = baseUnitService.findRefGoodsUnitByUnitId(unitId);

        // 判断集合不为空 循环里面 记录判断 商品id不为空
        if ( list!= null || !list.isEmpty() || list.size() <= 0){
            for (RefGoodsUnit refGoodsUnit : list) {

                if (refGoodsUnit.getRefGoodsid() != null
                        && refGoodsUnit.getRefGoodsid().longValue() <= 0){
                    return AjaxResult.success("不能删除，有商品在使用此单位");
                }
            }
        }

        // 删除
        return toAjax(baseUnitService.delBaseUnit(unitId));

    }
}
